#!/usr/bin/env python
# Single purpose HTTP server
# - serves files specified as arguments in order of appearance


import os
import sys
import BaseHTTPServer
#from pprint import pprint

class Handler(BaseHTTPServer.BaseHTTPRequestHandler):
    def do_POST(self):

        print self.rfile.read(int(self.headers.getheader('content-length')))

        response = self.dummy_response
        if not self.filelist:
            print 'No more files to serve - sending dummy response'
            sys.stdout.flush()
        else:
            response = self.filelist.pop()
        self.reply(response)

    def reply(self, response):
        try:
            #redirect stdout to client
            stdout = sys.stdout
            sys.stdout = self.wfile
            print response
            stdout.flush()
        finally:
            sys.stdout = stdout # restore
            pass

PORT = 12347
print "Serving at port", PORT
sys.stdout.flush()

filelist = []
for file in sys.argv[1:]:
    if os.path.isfile(file):
        print "Adding file %s" % file
        sys.stdout.flush()
        with open(file) as f:
            filelist.append(f.read())

filelist.reverse()
Handler.filelist = filelist
Handler.dummy_response = open("dummy", "r").read()
httpd = BaseHTTPServer.HTTPServer(("127.0.0.1", PORT), Handler)
httpd.serve_forever()
